Much of today's content is delivered over data networks that collectively form the Internet. Usually, this content is composed of one or more elements. These elements can include text, audio, video, images, multimedia, applications, advertisements, or some combination thereof. For specific content, the identification and retrieval of the included elements are controlled by a set of “child tags” that are specified in a “parent page” for that content. A child tag identifies a content element. A parent page is any page or file that directly or indirectly includes one or more child tags. A parent page directly includes a child tag by defining the tag within the body of the parent page. A parent page indirectly includes a child tag by including a reference or link to another parent page that then defines the child tag. Accordingly, the parent page can be a base page, include file, header file, metadata containing file, or other pages or files associated with customer content.
A tag can be a link or a script. The link can specify a Uniform Resource Locator or other reference identifying one or more of the content's elements (e.g., the HTML “src” tag). The script can specify a set of instructions for one or more of the content's elements. Scripts can be specified using a variety of languages including JavaScript and PERL as some examples.
The user experience is determined based on the speed with which all of the elements associated with the child tags of one or more parent pages are delivered. The user is typically unaware or unconcerned with the fact that the elements may be delivered from different servers or different sources. For example, a particular content provider may specify a parent page for its website, with the parent page including child tags for populating the website with an advertisement, a video, and different images. The parent page, as well as the images, may be delivered from the content provider's own servers, the advertisement may be delivered from a third-party advertisement server, and the video may be delivered from the server of a third-party video hosting service provider. The user simply expects all these elements to load within some time frame. When one or more of the elements continues to load beyond that time frame, the user may become disinterested, frustrated, or otherwise indifferent to that content and as a result, navigate away from the particular content provider's website.
To improve the user experience, content providers have come to rely on content delivery networks (CDNs) for expedited delivery of their content. CDNs cache the content provider content at different points-of-presence (PoP) throughout the network. This allows the CDN to serve the content to different users from locations that are geographically proximate to those users. As a result, the content can be delivered with less latency and with fewer network errors. Moreover, the CDN inherently provides failover because of its redundant caching at its different PoPs. Should one PoP become inaccessible, the same content can be served from a different PoP.
However, the CDN is only able to accelerate the delivery for the elements of the content provider content that it hosts. The CDN itself is reliant on third-party servers to deliver the other elements for services of those third parties. Some such elements include dynamically generated content or restricted content of the third parties that cannot be cached by the CDN. As some examples, the third-party delivered content elements can include advertisements from third-party advertising servers, social media feeds from third-party social media sites, video from third-party video hosting servers, as well as analytics, monitoring tools, scripts, and other applications from third-party tracking servers. Accordingly, content may include a third party delivered element without the recipient for the content even knowing about the included third party delivered element. For example, a third party delivered element can include a single pixel graphic or token object that is unperceivable, but that the third party uses to track and monitor the recipient. If any one of these third-party servers is down or otherwise performs poorly, the delivery of the overall content is degraded.
Exacerbating the situation are various regional, enterprise, and national firewalls that block certain content and content elements from certain content providers. For example, it is not uncommon for countries with restrictive speech policies to block tags identifying content elements that are retrieved from social media sites such as www.facebook.com and www.twitter.com. Therefore, even when the CDN delivers elements of CDN-customer content that are not blocked, the parent page for that same CDN-customer content may include a tag to a blocked element that is delivered by a third-party. The blocked element would then delay the overall delivery of the customer's content.
Accordingly, there is a need to empower a CDN with more control over elements of CDN-customer content that are delivered by third parties. To this end, there is a need to enable the CDN to identify, from the customer hosted content, tags to elements that are hosted by other third parties that are unavailable, inaccessible, or severely underperforming. There is further a need to enable the CDN to dynamically modify or remove these tags when the CDN-customer content elements to which the tags point are unavailable, inaccessible, or severely underperforming from the third-party. Generally, there is a need for the CDN to prevent the degradation of the overall delivery performance for the CDN-customer content and the receiving user's experience, due to poorly performing or inaccessible third parties.